Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Modicon Premium
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
Lowkee
Всем привет
Собственно возник вот такой вопрос....,поблема,большая проблема

Усть список массивов с адресами(массивов порядка 30,адресов всего примерно 400)

Эти адреса находятся на 3х контролерах,мне нужно чтобы,все эти адреса шли на 4ый,

Но решения этой проблемы так и не получил,точнее мне многие объясняли,но из-за того,Что я новичок в этой области,мне тяжело достаточно понять....

Каким образом я смогу это сделать(желательно не образно а чуть-чуть п-детальнее)

Спасибо
Lowkee
Вот,что вызывает вопросы...
san
1) not FBI_0.q - таймер сам себя перезапускает
2) в моем примере на входе блока AND стоит инверсия. В Вашем пример test это массив, с помощью которого контролируется обработка функции READ_VAR. 0-й бит этого 1-го слова массива указывает на то, что функция в стадии обработки. Тоесть если test[1].0=1 - то предыдущий вызов функции еще не обработан, а если равно 0, то уже обработан. По-этому ставится инверсия
3) NUM -это с какого, а NB - это количество
4) настоятельно рекомендую обмениваться словами %MW а не %M, в конце концов биты можно паковать в слова

Lowkee
Вроде бы кое как улеглось у меня что к чему,но единственное что не могу понять
Мы эти блоки ставим в тот контроллер с которого хотим считать,но каким образом я смогу отправить мои массивы с адресами...Вот вроде понял,что нужно создать массив из 4х слов,а в какой раздел вставлять те массивы которые нужно выслать?

заранее спасибо
san
READ_VAR ставится на том ПЛК, который хочет считать. А на том ПЛК с которого считуют ничего ставить не надо. Modbus/TCP Сервер прописан на уровне операционки.
Если нужно записывать с ПЛК, туда нужно прописать программу с функцией WRITE_VAR. А на том ПЛК на который пишут ничего ставить не надо. Modbus/TCP Сервер прописан на уровне операционки.
san
если я Вас правильно понял
Lowkee
ну впринципе я так и понимал,а вот главный вопрос,в read_var(вы мне уже не первый раз говорили об этом) Но,я так и не совсем понял,раз мне нужно считать все те массивы что у меня находятся на другом ПЛК,что же я тогда должен вводить в read_var ,он же у меня получается совершенно пустой...

Ну создам я этот массив,и 4х слов,а как же быть дальше....вот не укладывается это у меня в голове,столько времени уже прошло,а в голове так особо и не улеглось,как быть в таких случаях...
san
Цитата(san @ 21.10.2010, 14:30) *
2) в моем примере на входе блока AND стоит инверсия. В Вашем пример test это массив, с помощью которого контролируется обработка функции READ_VAR. 0-й бит этого 1-го слова массива указывает на то, что функция в стадии обработки. Тоесть если test[1].0=1 - то предыдущий вызов функции еще не обработан, а если равно 0, то уже обработан. По-этому ставится инверсия

Это массив из 4-х слов не для обмена данными, а для контроля за роботой функции.

Цитата(san @ 21.10.2010, 14:30) *
3) NUM -это с какого, а NB - это количество

А вот это указывается "массив" источника данных на чужом ПЛК.

А массив, куда ложатся считанные данные указывается на выходе RECP в READ_VAR.
ScrewDriver
1) Можно сделать глобальную таблицу в каждом контроллере и тогда все данные будут доступны везде
2) Можно использовать стандартную таблицу обмена - ничего писать не надо, нужно только сконфигурировать контроллеры на чтение-запись. Читать-писать ПЛК будут сами.

К сожалению сейчас Юнити не установлена, так что как это выглядит не покажу - посмотрите раздел communications.
Позвоните в техподдержку, там помогут и расскажут как и что.
Lowkee
Цитата(san @ 26.10.2010, 11:14) *
3) NUM -это с какого, а NB - это количество


то есть в num я могу вводить посто имя начального массива,а в nb общее кол-во массивов?
Я правильно понят?
san
Нет не правильно. В NUM нужно вводить начальный адресс массива - 100 это будет %MW100, а в NB - количество слов, если NB=32 - то это будет массив в чужом ПЛК - %MW100:32.
san
Сейчас только вспомнил, что у Вас Пермиум. Там вместо функции ADDM должна использоваться функция ADDR.
И еще - ScrewDriver прав. В бортовых ЦПУшных Ethernet портах Премиум доступны также GloabalData и функции IO Scaning, которые конфигурируются. Но если Вы пошли по этому пути, то наверное не стоит уже сварачивать.
Lowkee
Это точно))тут хоть как то добраться до конченой точки) а про i/o scanning слышал,думаю тоже стоит посмотреть
Спасибо еще раз,буду смотреть...
san
IO Scaning конфигурируется только со стороны Клиентского приложения. Укзываете диапазон переменных для записи и для чтения и периодичность опроса для конкретного девайса с нужным IP. Девайс может быть любой фирмы, требование - наличие Modbus/TCP сервера.
Global Data работает только если все ПЛК у Вас Modicon. В настройках объявляете груповой адресс для всех ПЛК. Нужную перменную для записи в другие ПЛК (до 1 Кбайта) в ее свойствах объявлете как Издаваемую (Publish) а для чтения как Подписываемую (Subscribte). Название и структура переменных должны совпадать на Издателе и на подписчике.
В принципе для вашего случая подходят оба эти сервиса. Надо было Вас сразу туда направить, там программу писать не надо. Но в любом случае внимательно почитайте хелп.
Lowkee
Всем доброго дня
Я уже обращался с вопросом о передаче информации с нескольких массивов на один, но тогда мненужно было передавать %MW , а теперь задача изменилась, нужно передать %M ,а как это осуществить?
Так как в IO Scanning возможно настройка только по %MW? Подскажите пож-та
ScrewDriver
сделайте сбор всех %M в %MW (%MW0.0:=%M0; %MW0.1:=%M1......), передайте %MW, расшифруйте обратно. (%M0:=%MW0.0; %M1:=%MW0.1....)

Я извиняюсь, но может с такими знаниями почитать книжки по PLC или сходить на курсы?
У И. Петрова помнится была хорошая книжка для начинаюших - спросите в..... http://www.twirpx.com/file/4896/
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.